/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package hydraconstraints.provider;

import hydraconstraints.util.HydraconstraintsAdapterFactory;

import java.util.ArrayList;
import java.util.Collection;

import org.eclipse.emf.common.notify.Adapter;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.common.notify.Notifier;

import org.eclipse.emf.edit.provider.ChangeNotifier;
import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
import org.eclipse.emf.edit.provider.IChangeNotifier;
import org.eclipse.emf.edit.provider.IDisposable;
import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
import org.eclipse.emf.edit.provider.IItemLabelProvider;
import org.eclipse.emf.edit.provider.IItemPropertySource;
import org.eclipse.emf.edit.provider.INotifyChangedListener;
import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
import org.eclipse.emf.edit.provider.ITreeItemContentProvider;

/**
 * This is the factory that is used to provide the interfaces needed to support Viewers.
 * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
 * The adapters also support Eclipse property sheets.
 * Note that most of the adapters are shared among multiple instances.
 * <!-- begin-user-doc -->
 * <!-- end-user-doc -->
 * @generated
 */
public class HydraconstraintsItemProviderAdapterFactory extends HydraconstraintsAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
	/**
	 * This keeps track of the root adapter factory that delegates to this adapter factory.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ComposedAdapterFactory parentAdapterFactory;

	/**
	 * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected IChangeNotifier changeNotifier = new ChangeNotifier();

	/**
	 * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected Collection<Object> supportedTypes = new ArrayList<Object>();

	/**
	 * This constructs an instance.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public HydraconstraintsItemProviderAdapterFactory() {
		supportedTypes.add(IEditingDomainItemProvider.class);
		supportedTypes.add(IStructuredItemContentProvider.class);
		supportedTypes.add(ITreeItemContentProvider.class);
		supportedTypes.add(IItemLabelProvider.class);
		supportedTypes.add(IItemPropertySource.class);
	}

	/**
	 * This keeps track of the one adapter used for all {@link hydraconstraints.Model} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ModelItemProvider modelItemProvider;

	/**
	 * This creates an adapter for a {@link hydraconstraints.Model}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createModelAdapter() {
		if (modelItemProvider == null) {
			modelItemProvider = new ModelItemProvider(this);
		}

		return modelItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link hydraconstraints.Constraint} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ConstraintItemProvider constraintItemProvider;

	/**
	 * This creates an adapter for a {@link hydraconstraints.Constraint}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createConstraintAdapter() {
		if (constraintItemProvider == null) {
			constraintItemProvider = new ConstraintItemProvider(this);
		}

		return constraintItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link hydraconstraints.BoolPriorityOperand1} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected BoolPriorityOperand1ItemProvider boolPriorityOperand1ItemProvider;

	/**
	 * This creates an adapter for a {@link hydraconstraints.BoolPriorityOperand1}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createBoolPriorityOperand1Adapter() {
		if (boolPriorityOperand1ItemProvider == null) {
			boolPriorityOperand1ItemProvider = new BoolPriorityOperand1ItemProvider(this);
		}

		return boolPriorityOperand1ItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link hydraconstraints.BoolPriorityOperand2} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected BoolPriorityOperand2ItemProvider boolPriorityOperand2ItemProvider;

	/**
	 * This creates an adapter for a {@link hydraconstraints.BoolPriorityOperand2}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createBoolPriorityOperand2Adapter() {
		if (boolPriorityOperand2ItemProvider == null) {
			boolPriorityOperand2ItemProvider = new BoolPriorityOperand2ItemProvider(this);
		}

		return boolPriorityOperand2ItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link hydraconstraints.Neg} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected NegItemProvider negItemProvider;

	/**
	 * This creates an adapter for a {@link hydraconstraints.Neg}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createNegAdapter() {
		if (negItemProvider == null) {
			negItemProvider = new NegItemProvider(this);
		}

		return negItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link hydraconstraints.And} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected AndItemProvider andItemProvider;

	/**
	 * This creates an adapter for a {@link hydraconstraints.And}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createAndAdapter() {
		if (andItemProvider == null) {
			andItemProvider = new AndItemProvider(this);
		}

		return andItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link hydraconstraints.Or} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected OrItemProvider orItemProvider;

	/**
	 * This creates an adapter for a {@link hydraconstraints.Or}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createOrAdapter() {
		if (orItemProvider == null) {
			orItemProvider = new OrItemProvider(this);
		}

		return orItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link hydraconstraints.Implies} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ImpliesItemProvider impliesItemProvider;

	/**
	 * This creates an adapter for a {@link hydraconstraints.Implies}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createImpliesAdapter() {
		if (impliesItemProvider == null) {
			impliesItemProvider = new ImpliesItemProvider(this);
		}

		return impliesItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link hydraconstraints.Xor} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected XorItemProvider xorItemProvider;

	/**
	 * This creates an adapter for a {@link hydraconstraints.Xor}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createXorAdapter() {
		if (xorItemProvider == null) {
			xorItemProvider = new XorItemProvider(this);
		}

		return xorItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link hydraconstraints.More} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected MoreItemProvider moreItemProvider;

	/**
	 * This creates an adapter for a {@link hydraconstraints.More}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createMoreAdapter() {
		if (moreItemProvider == null) {
			moreItemProvider = new MoreItemProvider(this);
		}

		return moreItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link hydraconstraints.MoreOrEqual} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected MoreOrEqualItemProvider moreOrEqualItemProvider;

	/**
	 * This creates an adapter for a {@link hydraconstraints.MoreOrEqual}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createMoreOrEqualAdapter() {
		if (moreOrEqualItemProvider == null) {
			moreOrEqualItemProvider = new MoreOrEqualItemProvider(this);
		}

		return moreOrEqualItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link hydraconstraints.NotEqual} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected NotEqualItemProvider notEqualItemProvider;

	/**
	 * This creates an adapter for a {@link hydraconstraints.NotEqual}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createNotEqualAdapter() {
		if (notEqualItemProvider == null) {
			notEqualItemProvider = new NotEqualItemProvider(this);
		}

		return notEqualItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link hydraconstraints.Less} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected LessItemProvider lessItemProvider;

	/**
	 * This creates an adapter for a {@link hydraconstraints.Less}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createLessAdapter() {
		if (lessItemProvider == null) {
			lessItemProvider = new LessItemProvider(this);
		}

		return lessItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link hydraconstraints.Equal} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected EqualItemProvider equalItemProvider;

	/**
	 * This creates an adapter for a {@link hydraconstraints.Equal}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createEqualAdapter() {
		if (equalItemProvider == null) {
			equalItemProvider = new EqualItemProvider(this);
		}

		return equalItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link hydraconstraints.LessOrEqual} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected LessOrEqualItemProvider lessOrEqualItemProvider;

	/**
	 * This creates an adapter for a {@link hydraconstraints.LessOrEqual}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createLessOrEqualAdapter() {
		if (lessOrEqualItemProvider == null) {
			lessOrEqualItemProvider = new LessOrEqualItemProvider(this);
		}

		return lessOrEqualItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link hydraconstraints.NumPriorityOperand2} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected NumPriorityOperand2ItemProvider numPriorityOperand2ItemProvider;

	/**
	 * This creates an adapter for a {@link hydraconstraints.NumPriorityOperand2}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createNumPriorityOperand2Adapter() {
		if (numPriorityOperand2ItemProvider == null) {
			numPriorityOperand2ItemProvider = new NumPriorityOperand2ItemProvider(this);
		}

		return numPriorityOperand2ItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link hydraconstraints.NumPriorityOperand1} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected NumPriorityOperand1ItemProvider numPriorityOperand1ItemProvider;

	/**
	 * This creates an adapter for a {@link hydraconstraints.NumPriorityOperand1}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createNumPriorityOperand1Adapter() {
		if (numPriorityOperand1ItemProvider == null) {
			numPriorityOperand1ItemProvider = new NumPriorityOperand1ItemProvider(this);
		}

		return numPriorityOperand1ItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link hydraconstraints.Plus} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected PlusItemProvider plusItemProvider;

	/**
	 * This creates an adapter for a {@link hydraconstraints.Plus}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createPlusAdapter() {
		if (plusItemProvider == null) {
			plusItemProvider = new PlusItemProvider(this);
		}

		return plusItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link hydraconstraints.Mul} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected MulItemProvider mulItemProvider;

	/**
	 * This creates an adapter for a {@link hydraconstraints.Mul}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createMulAdapter() {
		if (mulItemProvider == null) {
			mulItemProvider = new MulItemProvider(this);
		}

		return mulItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link hydraconstraints.Minus} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected MinusItemProvider minusItemProvider;

	/**
	 * This creates an adapter for a {@link hydraconstraints.Minus}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createMinusAdapter() {
		if (minusItemProvider == null) {
			minusItemProvider = new MinusItemProvider(this);
		}

		return minusItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link hydraconstraints.Div} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected DivItemProvider divItemProvider;

	/**
	 * This creates an adapter for a {@link hydraconstraints.Div}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createDivAdapter() {
		if (divItemProvider == null) {
			divItemProvider = new DivItemProvider(this);
		}

		return divItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link hydraconstraints.MultipleFeature} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected MultipleFeatureItemProvider multipleFeatureItemProvider;

	/**
	 * This creates an adapter for a {@link hydraconstraints.MultipleFeature}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createMultipleFeatureAdapter() {
		if (multipleFeatureItemProvider == null) {
			multipleFeatureItemProvider = new MultipleFeatureItemProvider(this);
		}

		return multipleFeatureItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link hydraconstraints.SimpleFeature} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected SimpleFeatureItemProvider simpleFeatureItemProvider;

	/**
	 * This creates an adapter for a {@link hydraconstraints.SimpleFeature}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createSimpleFeatureAdapter() {
		if (simpleFeatureItemProvider == null) {
			simpleFeatureItemProvider = new SimpleFeatureItemProvider(this);
		}

		return simpleFeatureItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link hydraconstraints.Context} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ContextItemProvider contextItemProvider;

	/**
	 * This creates an adapter for a {@link hydraconstraints.Context}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createContextAdapter() {
		if (contextItemProvider == null) {
			contextItemProvider = new ContextItemProvider(this);
		}

		return contextItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link hydraconstraints.Any} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected AnyItemProvider anyItemProvider;

	/**
	 * This creates an adapter for a {@link hydraconstraints.Any}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createAnyAdapter() {
		if (anyItemProvider == null) {
			anyItemProvider = new AnyItemProvider(this);
		}

		return anyItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link hydraconstraints.All} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected AllItemProvider allItemProvider;

	/**
	 * This creates an adapter for a {@link hydraconstraints.All}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createAllAdapter() {
		if (allItemProvider == null) {
			allItemProvider = new AllItemProvider(this);
		}

		return allItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link hydraconstraints.Number} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected NumberItemProvider numberItemProvider;

	/**
	 * This creates an adapter for a {@link hydraconstraints.Number}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createNumberAdapter() {
		if (numberItemProvider == null) {
			numberItemProvider = new NumberItemProvider(this);
		}

		return numberItemProvider;
	}

	/**
	 * This returns the root adapter factory that contains this factory.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ComposeableAdapterFactory getRootAdapterFactory() {
		return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
	}

	/**
	 * This sets the composed adapter factory that contains this factory.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
		this.parentAdapterFactory = parentAdapterFactory;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public boolean isFactoryForType(Object type) {
		return supportedTypes.contains(type) || super.isFactoryForType(type);
	}

	/**
	 * This implementation substitutes the factory itself as the key for the adapter.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter adapt(Notifier notifier, Object type) {
		return super.adapt(notifier, this);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Object adapt(Object object, Object type) {
		if (isFactoryForType(type)) {
			Object adapter = super.adapt(object, type);
			if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter))) {
				return adapter;
			}
		}

		return null;
	}

	/**
	 * This adds a listener.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void addListener(INotifyChangedListener notifyChangedListener) {
		changeNotifier.addListener(notifyChangedListener);
	}

	/**
	 * This removes a listener.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void removeListener(INotifyChangedListener notifyChangedListener) {
		changeNotifier.removeListener(notifyChangedListener);
	}

	/**
	 * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void fireNotifyChanged(Notification notification) {
		changeNotifier.fireNotifyChanged(notification);

		if (parentAdapterFactory != null) {
			parentAdapterFactory.fireNotifyChanged(notification);
		}
	}

	/**
	 * This disposes all of the item providers created by this factory. 
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void dispose() {
		if (modelItemProvider != null) modelItemProvider.dispose();
		if (constraintItemProvider != null) constraintItemProvider.dispose();
		if (boolPriorityOperand1ItemProvider != null) boolPriorityOperand1ItemProvider.dispose();
		if (boolPriorityOperand2ItemProvider != null) boolPriorityOperand2ItemProvider.dispose();
		if (negItemProvider != null) negItemProvider.dispose();
		if (andItemProvider != null) andItemProvider.dispose();
		if (orItemProvider != null) orItemProvider.dispose();
		if (impliesItemProvider != null) impliesItemProvider.dispose();
		if (xorItemProvider != null) xorItemProvider.dispose();
		if (moreItemProvider != null) moreItemProvider.dispose();
		if (moreOrEqualItemProvider != null) moreOrEqualItemProvider.dispose();
		if (notEqualItemProvider != null) notEqualItemProvider.dispose();
		if (lessItemProvider != null) lessItemProvider.dispose();
		if (equalItemProvider != null) equalItemProvider.dispose();
		if (lessOrEqualItemProvider != null) lessOrEqualItemProvider.dispose();
		if (numPriorityOperand2ItemProvider != null) numPriorityOperand2ItemProvider.dispose();
		if (numPriorityOperand1ItemProvider != null) numPriorityOperand1ItemProvider.dispose();
		if (plusItemProvider != null) plusItemProvider.dispose();
		if (mulItemProvider != null) mulItemProvider.dispose();
		if (minusItemProvider != null) minusItemProvider.dispose();
		if (divItemProvider != null) divItemProvider.dispose();
		if (multipleFeatureItemProvider != null) multipleFeatureItemProvider.dispose();
		if (simpleFeatureItemProvider != null) simpleFeatureItemProvider.dispose();
		if (contextItemProvider != null) contextItemProvider.dispose();
		if (anyItemProvider != null) anyItemProvider.dispose();
		if (allItemProvider != null) allItemProvider.dispose();
		if (numberItemProvider != null) numberItemProvider.dispose();
	}

}
